/*
 * Copyright 2009 André Luiz Alves Moraes
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * */


package org.alamoraes.codegen;

import org.alamoraes.sfactory.ObjectFactory;

/**
 *
 * @author andre
 */
public class CodeFile {

    /**
     * Return the name of the user code block.
     * @param line the line containning the begin user code block tag.
     * @return the name of the block
     */
    protected String getBlockName(String line) {
        String bucb = getBeginUserCodeBlockTag();
        int startIdx = line.indexOf(bucb);
        startIdx = startIdx + bucb.length();
        return line.substring(startIdx);
    }

    /**
     * Return the begin of user code block tag. Defaults: &lt;&lt;bucb&gt;&gt;
     * @return
     */
    public String getBeginUserCodeBlockTag() {
        return AmCodeGenConsts.getObjectFactory().getInstance(ISystemProperties.class).getBeginUserCodeBlockTag();
    }

    /**
     * Return the end of user code block tag. Defaults: &lt;&lt;bucb&gt;&gt;
     * @return
     */
    public String getEndUserCodeBlockTag() {
        return AmCodeGenConsts.getObjectFactory().getInstance(ISystemProperties.class).getEndUserCodeBlockTag();
    }

    /**
     * Retunrs true if the line is a user code block begin line
     * @param line
     * @return
     */
    public boolean isLineBlockOpenTag(String line) {
        return line.contains(getBeginUserCodeBlockTag());
    }

    /**
     * Returns true if the line is a user code block end line
     * @param line
     * @return
     */
    public boolean isLineBlockCloseTag(String line) {
        return line.contains(getEndUserCodeBlockTag());
    }
}
